package org.jeecg.modules.ParameterModule.controller;

import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.ParameterModule.entity.*;
import org.jeecg.modules.ParameterModule.service.ImportExportService;
import org.jeecg.modules.zhoupackage.pojo.MlccFabricInfo;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import java.io.InputStream;
import java.util.List;

/**
 * 参数的导入导出
 * */
@Api(tags="导入数据")
@RestController
@RequestMapping("/admin/ImportData")
@Slf4j
public class ImportDataController {
    @Autowired
    private ImportExportService importExportService;

    /**
     * 导入定制下的参数
     * @param file    上传的Excel文件
     * @param category_id 品类id
     */
    @PostMapping("/importCategoryExcel")
    @Transactional(rollbackFor = Exception.class)
    public JSONObject importCategoryExcel(MultipartFile file, String category_id) throws Exception {
        JSONObject jsonObject = new JSONObject();
        ImportParams params = new ImportParams();
        //表格标题所在行，计数从0开始
        params.setTitleRows(1);
        //head头部所在行，计数从0开始
        params.setHeadRows(1);
        //表格sheet数量
        //params.setSheetNum(9);
        System.out.println("文件==="+file);
        InputStream inputStream = file.getInputStream();
        List<ExcelCategoryInfo> list = ExcelImportUtil.importExcel(inputStream, ExcelCategoryInfo.class, params);
        System.out.println("文件解析==="+list.size());
        int result = importExportService.importCategoryExcel(list, category_id);
        if (result == 0) {
            jsonObject.put("code", 0);
            jsonObject.put("msg", "导入成功");
        } else if(result==1){
            jsonObject.put("code", 1);
            jsonObject.put("msg", "Excel中暂无数据");
        }else if(result==2){
            jsonObject.put("code", 2);
            jsonObject.put("msg", "导入数据失败，请检查你设置的参数");
        }
        else {
            jsonObject.put("code", 500);
            jsonObject.put("msg", "文件中存在重复数据，已自动过滤");
        }
        return jsonObject;
    }

    /**
     * 导入绣字数据
     * @param file    上传的Excel文件
     * @param category_id 品类id
     */
    @PostMapping("/import_xiuzi_Excel")
    @Transactional(rollbackFor = Exception.class)
    public JSONObject import_xiuzi_Excel(MultipartFile file, String category_id,int type) throws Exception {
        JSONObject jsonObject = new JSONObject();
        ImportParams params = new ImportParams();
        //表格标题所在行，计数从0开始
        params.setTitleRows(1);
        //head头部所在行，计数从0开始
        params.setHeadRows(1);
        //表格sheet数量
        //params.setSheetNum(9);
        System.out.println("文件==="+file);
        InputStream inputStream = file.getInputStream();
        //type:1位置,2颜色，3图片，4字体，5高度
        int result = 0;
        if(type==1){
            List<ExcelXiuziLocaltion> list = ExcelImportUtil.importExcel(inputStream, ExcelXiuziLocaltion.class, params);
            System.out.println("文件解析1==="+list.size());
            result = importExportService.import_xiuzilocaltion(list, category_id);
        }else if(type==2){
            List<ExcelXiuziColor> list = ExcelImportUtil.importExcel(inputStream, ExcelXiuziColor.class, params);
            System.out.println("文件解析2==="+list.size());
            result = importExportService.import_xiuzicolor(list, category_id);
        }else if(type==3){
            List<ExcelXiuziFontImg2> list = ExcelImportUtil.importExcel(inputStream, ExcelXiuziFontImg2.class, params);
            System.out.println("文件解析3==="+list.size());
            result = importExportService.import_xiuziimg(list, category_id);
        }else if(type==4){
            List<ExcelXiuziFontImg> list = ExcelImportUtil.importExcel(inputStream, ExcelXiuziFontImg.class, params);
            System.out.println("文件解析4==="+list.size());
            result = importExportService.import_xiuzifont(list, category_id);
        }else {
            List<ExcelXiuziHeight> list = ExcelImportUtil.importExcel(inputStream, ExcelXiuziHeight.class, params);
            System.out.println("文件解析5==="+list.size());
            result = importExportService.import_xiuziheight(list, category_id);
        }
        if (result == 0) {
            jsonObject.put("code", 0);
            jsonObject.put("msg", "导入成功");
        } else if(result==1){
            jsonObject.put("code", 1);
            jsonObject.put("msg", "Excel中暂无数据");
        }else if(result==2){
            jsonObject.put("code", 2);
            jsonObject.put("msg", "导入数据失败，请检查你设置的参数");
        }
        else {
            jsonObject.put("code", 500);
            jsonObject.put("msg", "文件中存在重复数据，已自动过滤");
        }
        return jsonObject;
    }

    /**
     * 导入身体尺寸
     * @param file    上传的Excel文件
     * @param category_id 品类id
     */
    @PostMapping("/import_bodysizes_Excel")
    @Transactional(rollbackFor = Exception.class)
    public JSONObject import_bodysizes_Excel(MultipartFile file, String category_id,int type) throws Exception {
        JSONObject jsonObject = new JSONObject();
        ImportParams params = new ImportParams();
        //表格标题所在行，计数从0开始
        params.setTitleRows(1);
        //head头部所在行，计数从0开始
        params.setHeadRows(1);
        //表格sheet数量
        //params.setSheetNum(9);
        System.out.println("文件==="+file);
        InputStream inputStream = file.getInputStream();
        //type:0成衣，1净体
        int result = 0;
        if(type==0){
            List<ExcelBodysizes> list = ExcelImportUtil.importExcel(inputStream, ExcelBodysizes.class, params);
            System.out.println("文件解析1==="+list.size());
            result = importExportService.import_bodysizes_chengyi(list, category_id);
        }else {
            List<ExcelBodysizes> list = ExcelImportUtil.importExcel(inputStream, ExcelBodysizes.class, params);
            System.out.println("文件解析2==="+list.size());
            result = importExportService.import_bodysizes_jingyi(list, category_id);
        }
        if (result == 0) {
            jsonObject.put("code", 0);
            jsonObject.put("msg", "导入成功");
        } else if(result==1){
            jsonObject.put("code", 1);
            jsonObject.put("msg", "Excel中暂无数据");
        }else if(result==2){
            jsonObject.put("code", 2);
            jsonObject.put("msg", "导入数据失败，请检查你设置的参数");
        }
        else {
            jsonObject.put("code", 500);
            jsonObject.put("msg", "文件中存在重复数据，已自动过滤");
        }
        return jsonObject;
    }

    /**
     * 导入返修尺寸
     * @param file    上传的Excel文件
     * @param category_id 品类id
     */
    @PostMapping("/import_fanxiu_bodysizes_Excel")
    @Transactional(rollbackFor = Exception.class)
    public JSONObject import_fanxiu_bodysizes_Excel(MultipartFile file, String category_id) throws Exception {
        JSONObject jsonObject = new JSONObject();
        ImportParams params = new ImportParams();
        //表格标题所在行，计数从0开始
        params.setTitleRows(1);
        //head头部所在行，计数从0开始
        params.setHeadRows(1);
        //表格sheet数量
        //params.setSheetNum(9);
        System.out.println("文件==="+file);
        InputStream inputStream = file.getInputStream();
        //type:0成衣，1净体
        List<ExcelFanxiuBodysize> list = ExcelImportUtil.importExcel(inputStream, ExcelFanxiuBodysize.class, params);
        System.out.println("文件解析1==="+list.size());
        int result = importExportService.import_fanxiu_bodysizes(list, category_id);
        if (result == 0) {
            jsonObject.put("code", 0);
            jsonObject.put("msg", "导入成功");
        } else if(result==1){
            jsonObject.put("code", 1);
            jsonObject.put("msg", "Excel中暂无数据");
        }else if(result==2){
            jsonObject.put("code", 2);
            jsonObject.put("msg", "导入数据失败，请检查你设置的参数");
        }
        else {
            jsonObject.put("code", 500);
            jsonObject.put("msg", "文件中存在重复数据，已自动过滤");
        }
        return jsonObject;
    }

    /**
     * 导入工艺类型
     * @param file    上传的Excel文件
     * @param category_id 品类id
     */
    @PostMapping("/import_gongyi_Excel")
    @Transactional(rollbackFor = Exception.class)
    public JSONObject import_gongyi_Excel(MultipartFile file, String category_id) throws Exception {
        JSONObject jsonObject = new JSONObject();
        ImportParams params = new ImportParams();
        //表格标题所在行，计数从0开始
        params.setTitleRows(1);
        //head头部所在行，计数从0开始
        params.setHeadRows(1);
        //表格sheet数量
        //params.setSheetNum(9);
        System.out.println("文件==="+file);
        InputStream inputStream = file.getInputStream();
        //type:0成衣，1净体
        List<ExcelCategoryGongyi> list = ExcelImportUtil.importExcel(inputStream, ExcelCategoryGongyi.class, params);
        System.out.println("文件解析1==="+list.size());
        int result = importExportService.import_category_gongyi(list, category_id);
        if (result == 0) {
            jsonObject.put("code", 0);
            jsonObject.put("msg", "导入成功");
        } else if(result==1){
            jsonObject.put("code", 1);
            jsonObject.put("msg", "Excel中暂无数据");
        }else if(result==2){
            jsonObject.put("code", 2);
            jsonObject.put("msg", "导入数据失败，请检查你设置的参数");
        }
        else {
            jsonObject.put("code", 500);
            jsonObject.put("msg", "文件中存在重复数据，已自动过滤");
        }
        return jsonObject;
    }

    /**
     * 导入撞色数据
     * @param file    上传的Excel文件
     * @param category_id 品类id
     */
    @PostMapping("/import_zhuangse_Excel")
    @Transactional(rollbackFor = Exception.class)
    public JSONObject import_zhuangse_Excel(MultipartFile file, String category_id) throws Exception {
        JSONObject jsonObject = new JSONObject();
        ImportParams params = new ImportParams();
        //表格标题所在行，计数从0开始
        params.setTitleRows(1);
        //head头部所在行，计数从0开始
        params.setHeadRows(1);
        //表格sheet数量
        //params.setSheetNum(9);
        System.out.println("文件==="+file);
        InputStream inputStream = file.getInputStream();
        //type:0成衣，1净体
        List<ExcelZhuangseInfo> list = ExcelImportUtil.importExcel(inputStream, ExcelZhuangseInfo.class, params);
        System.out.println("文件解析1==="+list.size());
        int result = importExportService.import_category_zhuangse(list, category_id);
        if (result == 0) {
            jsonObject.put("code", 0);
            jsonObject.put("msg", "导入成功");
        } else if(result==1){
            jsonObject.put("code", 1);
            jsonObject.put("msg", "Excel中暂无数据");
        }else if(result==2){
            jsonObject.put("code", 2);
            jsonObject.put("msg", "导入数据失败，请检查你设置的参数,目前仅支持一个sheet额");
        }
        else {
            jsonObject.put("code", 500);
            jsonObject.put("msg", "文件中存在重复数据，已自动过滤");
        }
        return jsonObject;
    }
}
